package com.topInterview;

public class leecode123 {
    public int maxProfit(int[] arr) {
        if (arr == null || arr.length < 1) {
            return 0;
        }
        int ans = 0;
        //股票一次交易后，再买入的最优值
        int doneOnceMinusBuyMax = -arr[0];
        int doneOneMax = 0;
        int min = arr[0];
        //每次买在股票上坡
        for (int i = 1; i < arr.length; i++) {
            min = Math.min(min, arr[i]);
            ans = Math.max(ans, doneOnceMinusBuyMax + arr[i]);
            //一次买入的最最大值为，当前位置-最小值
            doneOneMax = Math.max(doneOneMax, arr[i] - min);
            //doneOnceMinusBuyMax 在i位置上的最优解可能是原先的doneOnceMinusBuyMax，也可能是doneOneMax-arr[i]
            doneOnceMinusBuyMax = Math.max(doneOnceMinusBuyMax, doneOneMax - arr[i]);
        }
        return ans;
    }
}
